<?php
class CartasController extends AppController
{
    public $components = array('RequestHandler');
    public $helpers = array('Js');

    function edit($id = null)
    {

        $this->Carta->id = $id;
        if ($this->request->is('get')) {
            $this->Carta->recursive = 0;
            $this->set('cartas', $this->paginate());
            $this->set("categoriasAsignadas", array());
            if ($id != null) {
                $this->loadModel('CartaCategoria');
                $this->set("categoriasAsignadas", $this->CartaCategoria->findAllByIdCarta($id));

                $conditions = array("CartaCategoria.id_carta" => $id);
                $dbCartasNoAsignadas = $this->CartaCategoria->find('list', array('fields' => array('CartaCategoria.id_categoria'),
                    'conditions' => $conditions ) );
                $this->loadModel('Categoria');

                if (!empty($dbCartasNoAsignadas)){

                $result = count($dbCartasNoAsignadas);
                  //  debug($dbCartasNoAsignadas);
                if ($result == 1 ){
                    $categoria = $this->CartaCategoria->findByIdCarta($id);
                    $idcat  = $categoria['CartaCategoria']['id_categoria'];
                  //  debug($idcat);
                    $conditions = array("Categoria.id !=" => $idcat);
                }

                else     $conditions = array("Categoria.id !=" => $dbCartasNoAsignadas);
                $db =  $this->Categoria->find("list", array(
                    'conditions' =>$conditions, 'fields' => array('Categoria.nombre')));
                //debug($db);
                $this->set("categorias", $db);


            }
                else {
                    $db =  $this->Categoria->find("list", array(
                        'fields' => array('Categoria.nombre')));
                    $this->set("categorias", $db);
                }

            }
            $this->request->data = $this->Carta->read();
            $this->loadModel('CartaCategoria');
            $this->set("categoriasAsignadas", $this->CartaCategoria->findAllByIdCarta($id));


        } else {
            if ($this->Carta->save($this->request->data)) {
                $this->Session->setFlash('La carta ha sido actualizada.','infoMessage',array(),'carta');
                $this->redirect("index");
            }
            else{
                $this->Session->setFlash('Ha habido un error al editar la carta.','errorMessage',array(),'carta');

            }

        }

    }


    public function add()
    {


        if ($this->request->is('post')) { //si es un post de un formulario
            $this->Carta->create();
            if ($this->Carta->save($this->request->data)) {
                $this->Session->setFlash('La carta ha sido guardada.','infoMessage',array(),'carta');
                //$this->redirect(array('controller' => 'pages',  'action' => 'display', 'home'));
            } else {
                $errors = $this->Carta->invalidFields();
                $error = "";
                //debug($errors['nombre']);
                if (!empty($errors)) $error = $errors['nombre_interno'][0];

                $this->Session->setFlash('La carta no ha podido ser guardada. '.$error,'errorMessage',array(),'carta');
            }


        }
        $this->Carta->recursive = 0;
        $this->set('cartas', $this->paginate());
        $this->set("categoriasAsignadas", array());
    }


    function delete($id)
    {
        if (!$this->request->is('post')) {
            throw new MethodNotAllowedException();
        }
        if ($this->Carta->delete($id)) {
            $this->Session->setFlash('La carta ha sido borrada correctamente.','infoMessage',array(),'carta');
            $this->redirect(array('action' => 'index'));
        }
        else{
            $this->Session->setFlash('Ha habido un error al guardar la carta.','errorMessage',array(),'carta');
        }
    }



    public function index($id = null)
    {


        $this->loadModel("CartaCategoria");
        $this->set('cartas', $this->Carta->find('all'));
        $this->set('categoriasAsignadas', array());

        if ($id != null) {
            $db = $this->CartaCategoria->findAllByIdCarta($id);
         // debug($db);
            $this->set("categoriasAsignadas", $db);

        }

    }

    public function verCategorias($id = null){
        $this->Carta->recursive = 0;
        $this->set('cartas', $this->paginate());
        $this->set("categoriasAsignadas", array());
        if ($id != null) {
            $this->loadModel('CartaCategoria');
            $this->set("categoriasAsignadas", $this->CartaCategoria->findAllByIdCarta($id));

        }
        $this->redirect($this->referer());
    }


}